package com.lzh.rabbitMQ.five;

import com.lzh.rabbitMQ.com.lzh.rabbitMQ.utils.RabbitUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

import java.util.Random;

public class ReceiveLogs01 {
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception{

        Channel channel = RabbitUtils.getChannel();
        //声明交换机类型(fount广播)  类似QQ群你一发消息所有人都能收到消息
        channel.exchangeDeclare(EXCHANGE_NAME,"fount");
        /**
         * 生成一个临时的队列 队列的名称是随机的
         * 当消费者断开和该队列的连接时 队列自动删除
         */
        String queuename = channel.queueDeclare().getQueue();
        // 把该临时队列绑定我们的 exchange 其中 routingkey( 也称之为 binding key) 为空字符串
        channel.queueBind(queuename,EXCHANGE_NAME,"");
        System.out.println("等待接收消息=========");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" 控制台打印接收到的消息"+message);
        };
        /**
         *消费者消费消息
         *  1、消费那个队列
         *  2、消费成功后是否自动答应 true 代表答应
         *  3、消费者未能成功消费消息，进行回调（如果接收不到就得写一个接收不到的内容）
         *  4、消费者取消消费的回调
         */
        channel.basicConsume(queuename,true,deliverCallback,comsumerTag->{});

    }
}
